//  HomeTableViewController.swift
//  ZBWb
//
//  Created by 天隐翎 on 16/4/6.
//  Copyright © 2016年 csdn. All rights reserved.
//

import UIKit

private let HomeCellId = "HomeCellId"


import SVProgressHUD
class HomeTableViewController: ZBWelTableViewController {
    
//    懒加载模型
//    lazy var status:[ZBStatus] = [ZBStatus]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setUI()
//        加载数据
        setdata()
    }
    //    设置属性.不过这个属性是viewModel
    private lazy var StatusListViewModel: ZBStatusListViewModel = ZBStatusListViewModel()
    
    
   @objc private func setdata() {
        StatusListViewModel.loadHomagePageData (indicatorView.isAnimating()) {(isSuccess) -> () in
            
            //不管成功还是失败都是应该停止refreshControl的转动 并且回到最顶部
            self.refreshControl?.endRefreshing()
            
            
            if !isSuccess{
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                return
            }
//            刷新视图
            self.tableView.reloadData()
//            停止菊花转动
            self.indicatorView.stopAnimating()
            
            
        }
    }
   @objc private func setUI(){
        //        v是父类的属性.可以直接使用
        if !userlogin{
            
            v?.setVisitorInto("关注一些人,回到这里看看有什么惊喜", imagename: "visitordiscover_feed_image_smallicon", isHome: true)
            return
        }
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: "pop")
        
//        注册cell
        prepareForTableView()
        
        
    }
    
//    注册cell
    private func prepareForTableView(){
        
        tableView.registerClass(ZBStatusTableViewCell.self, forCellReuseIdentifier: HomeCellId)
        
//        设置行高为自动计算
        tableView.rowHeight = UITableViewAutomaticDimension
//        设置预估行高
        tableView.estimatedRowHeight = 300
        
//        设置分割线
        tableView.separatorStyle = .None
        
        
//        把子控件加载到TablefootView
        tableView.tableFooterView = indicatorView
        
        refreshControl = UIRefreshControl()
        //添加监听事件
        refreshControl?.addTarget(self, action: "setdata", forControlEvents: .ValueChanged)
//        设置tableViewCell的高度
//    tableView.rowHeight = 250     
    }
    
    @objc private func pop(){
//        print("pop")
        let temp = ZBTempViewController()
        //    进行页面的跳转
        navigationController?.pushViewController(temp, animated: true)
        
    }
    
//    懒加载下拉刷新的子控件
    private lazy var indicatorView: UIActivityIndicatorView = {
        let v = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
        //        v.startAnimating()
        return v
    }()
    
    
    
    
    
    
}

//    MARK数据源方法显示数据 &协议方法
extension HomeTableViewController {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return StatusListViewModel.statusArray.count
        
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//        要在设置界面的时候注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! ZBStatusTableViewCell
        
//        cell.textLabel?.text = StatusListViewModel.status[indexPath.row].text
        cell.statusViewModel = StatusListViewModel.statusArray[indexPath.row]
        //添加一个标记 如果正在上拉操作就不执行以下分支
        //正在加载最后一个cell 并且 小菊花没有转动
        if  !indicatorView.isAnimating() && indexPath.row == StatusListViewModel.statusArray.count - 1 {
            //表示正在加载最后一个cell
            //只是loadData
            //转动小菊花
            
            setdata()
            indicatorView.startAnimating()
        }
        return cell
   
    }

}













